using System;
using System.ServiceModel;
using Sinacor.Infra.Service.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;
using System.Text;
using Sinacor.Infra.Service.Common;

namespace Sinacor.Servico.Bovespa.ManutencaoOrdens.ServiceImplementation.Translator.BusinessEntityToDataContract
{
	public class Justificativa 
    {
		public Justificativa(){}

		public Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse ToJustificativaResponse(BusinessEntity.Justificativa from)
        {
            Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse retorno = new Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse();

            if (from == null)
                return null;

            retorno.ApelidoCliente = from.ApelidoCliente;
            retorno.Ativo = from.Ativo;
            retorno.Codigo = from.Codigo;
            retorno.CodigoUsuario = from.CodigoUsuario;
            retorno.DataAlteracao = from.DataAlteracao;
            retorno.DataOrdem = from.DataOrdem;
            retorno.DataHoraOrdem = from.DataHoraOrdem;
            retorno.Justificativa = from.JustificativaOrdem;

            switch (from.NaturezaOperacao)
            {
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Compra:
                    retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Compra;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.Venda:
                    retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.Venda;
                    break;
                case Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessEntity.Enum.NaturezaOperacao.CompraVenda:
                    retorno.NaturezaOperacao = Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Enum.NaturezaOperacao.CompraVenda;
                    break;
            }

            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroSubSequenciaOrdem = from.NumeroSubSequenciaOrdem;
            retorno.PendenteMensageria = from.PendenteMensageria;

            return retorno;
		}

		public List<Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse> ToJustificativaResponse(List<BusinessEntity.Justificativa> from)
        {
            List<Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse> lista = new List<Sinacor.Servico.Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse>();
            Bovespa.ManutencaoOrdens.Service.DataContract.Response.JustificativaResponse item = null;

            if (from == null)
                return null;

            foreach (BusinessEntity.Justificativa inLista in from)
            {
                item = this.ToJustificativaResponse(inLista);
                lista.Add(item);
            }

            return lista;
		}
	}
}